Marine vessel station keeping systems and methods

ABSTRACT

A system for maintaining a marine vessel in a body of water at a selected position and orientation includes a global positioning system that determines a global position and heading of the vessel and a proximity sensor that determines a relative position and bearing of the vessel with respect to an object near the vessel. A controller operable in a station keeping mode is in signal communication with the GPS and the proximity sensor. The controller chooses between using global position and heading data from the GPS and relative position and bearing data from the proximity sensor to determine if the vessel has moved from the selected position and orientation. The controller calculates thrust commands required to return the vessel to the selected position and orientation and outputs the thrust commands to a marine propulsion system, which uses the thrust commands to reposition the vessel.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. application Ser. No. 15/138,860, filed Apr. 26, 2016, which claims the benefit of U.S. Provisional Application Ser. No. 62/301,887, filed Mar. 1, 2016, both of which applications are hereby incorporated by reference herein.

FIELD

The present disclosure relates to systems and methods for controlling a position and an orientation of a marine vessel in a body of water.

BACKGROUND

U.S. Pat. No. 6,273,771, which is hereby incorporated by reference in entirety, discloses a control system for a marine vessel that incorporates a marine propulsion system that can be attached to a marine vessel and connected in signal communication with a serial communication bus and a controller. A plurality of input devices and output devices are also connected in signal communication with the communication bus and a bus access manager, such as a CAN Kingdom network, is connected in signal communication with the controller to regulate the incorporation of additional devices to the plurality of devices in signal communication with the bus whereby the controller is connected in signal communication with each of the plurality of devices on the communication bus. The input and output devices can each transmit messages to the serial communication bus for receipt by other devices.

U.S. Pat. No. 7,267,068, which is hereby incorporated by reference in entirety, discloses a marine vessel that is maneuvered by independently rotating first and second marine propulsion devices about their respective steering axes in response to commands received from a manually operable control device, such as a joystick. The marine propulsion devices are aligned with their thrust vectors intersecting at a point on a centerline of the marine vessel and, when no rotational movement is commanded, at the center of gravity of the marine vessel. Internal combustion engines are provided to drive the marine propulsion devices. The steering axes of the two marine propulsion devices are generally vertical and parallel to each other. The two steering axes extend through a bottom surface of the hull of the marine vessel.

U.S. Pat. No. 7,305,928, which is hereby incorporated by reference in entirety, discloses a vessel positioning system that maneuvers a marine vessel in such a way that the vessel maintains its global position and heading in accordance with a desired position and heading selected by the operator of the marine vessel. When used in conjunction with a joystick, the operator of the marine vessel can place the system in a station keeping enabled mode and the system then maintains the desired position obtained upon the initial change in the joystick from an active mode to an inactive mode. In this way, the operator can selectively maneuver the marine vessel manually and, when the joystick is released, the vessel will maintain the position in which it was at the instant the operator stopped maneuvering it with the joystick.

U.S. Pat. No. 8,924,054, which is hereby incorporated by reference in entirety, discloses systems and methods for orienting a marine vessel having a marine propulsion device. A control circuit controls operation of the marine propulsion device. A user input device inputs to the control circuit a user-desired global position and a user-desired heading of the marine vessel. The control circuit calculates a position difference between the user-desired global position and an actual global position of the marine vessel and controls the marine propulsion device to minimize the position difference. The control circuit controls the marine propulsion device to orient an actual heading of the marine vessel towards the user-desired global position when the position difference is greater than a threshold. When the position difference is less than the threshold, the control circuit controls the marine propulsion device to minimize a difference between the actual heading and the user-desired heading while minimizing the position difference.

SUMMARY

This Summary is provided to introduce a selection of concepts that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used as an aid in limiting the scope of the claimed subject matter.

According to one example of the present disclosure, a system for maintaining a marine vessel in a body of water at a selected position and a selected orientation is disclosed. A global positioning system (GPS) on the marine vessel determines a global position and a heading of the marine vessel with respect to Earth's geographic coordinate system. A proximity sensor on the marine vessel determines a relative position and a bearing of the marine vessel with respect to an object near the marine vessel. A controller is operable in a station keeping mode and is in signal communication with the GPS and the proximity sensor. The controller chooses between using global position and heading data from the GPS and relative position and bearing data from the proximity sensor to determine if the marine vessel has moved from one or both of the selected position and the selected orientation. In the station-keeping mode, the controller thereafter calculates thrust commands required to return the marine vessel to the selected position and the selected orientation and outputs the thrust commands to a marine propulsion system, which uses the thrust commands to reposition the marine vessel at the selected position and the selected orientation.

According to a further example of the present disclosure, a method for maintaining a marine vessel in a body of water at a selected position and a selected orientation is disclosed. The method includes accepting an input to initiate a station keeping mode of a control system of the marine vessel and using a proximity sensor on the marine vessel to determine if an object is within a given range of the marine vessel. In response to the object being within the given range of the marine vessel, the method includes obtaining a relative position and a bearing of the marine vessel with respect to the object with the proximity sensor, and thereafter using relative position and bearing data from the proximity sensor to determine if the marine vessel subsequently moves from one or both of the selected position and the selected orientation. In response to the object not being within the given range of the marine vessel, the method includes obtaining a global position and a heading of the marine vessel using a global positioning system (GPS), and thereafter using global position and heading data from the GPS to determine if the marine vessel subsequently moves from one or both of the selected position and the selected orientation. The method further includes using a difference between the selected position and the selected orientation and an actual position and an actual orientation, as determined from the relative position and bearing data or the global position and heading data, as appropriate, to calculate thrust commands that will return the marine vessel to the selected position and the selected orientation. The method additionally includes outputting the thrust commands to a marine propulsion system, which uses the thrust commands to reposition the marine vessel at the selected position and the selected orientation.

BRIEF DESCRIPTION OF DRAWINGS

Examples of systems and methods for controlling position and orientation of a marine vessel are described with reference to the following Figures. The same numbers are used throughout the Figures to reference like features and like components.

FIG. 1 shows an exemplary marine vessel with an exemplary propulsion control system.

FIG. 2 is a schematic representation of a marine vessel at two different positions and orientations.

FIG. 3 is a schematic representation of a marine vessel near a dock.

FIG. 4 is a schematic representation of a marine vessel at two different positions and orientations with respect to the dock.

FIG. 5 illustrates a method for controlling position and orientation of a marine vessel according to the present disclosure.

FIG. 6 schematically illustrates a system for controlling position and orientation of a marine vessel according to the present disclosure.

DETAILED DESCRIPTION OF DRAWINGS

In the present description, certain terms have been used for brevity, clearness and understanding. No unnecessary limitations are to be implied therefrom beyond the requirement of the prior art because such terms are used for descriptive purposes only and are intended to be broadly construed.

FIGS. 1-4 and 6 schematically depict various embodiments of marine vessels and control systems for orienting and maneuvering the marine vessels. It should be understood that the particular configurations of the marine vessels, propulsion systems, and control systems shown and described are exemplary. It is possible to apply the concepts described in the present disclosure with substantially different configurations therefor. For example, the marine vessels that are depicted have two or three marine propulsion devices. However, it should be understood that the concepts of the present disclosure are applicable to marine vessels having any number of marine propulsion devices. Additionally, although the present disclosure describes the propulsion devices as being stern drives, other arrangements such as an inboard arrangements, outboard arrangements, pod arrangements, etc. using propellers, impellers, jets, or the like can be controlled according to the same principles and methods. The control systems described herein include certain operational structures such as global positioning system (GPS) devices and inertial measurement units (IMUs). It should be understood that the concepts disclosed in the present disclosure are capable of being implemented with different types of systems for acquiring global position data and are not limited to the specific types and numbers of such devices described and depicted herein. Further, the present disclosure describes certain types of user input devices. It should also be recognized that the concepts disclosed in the present disclosure are also applicable in a preprogrammed format without user input, or in conjunction with different types of user input devices, as known to one of skill in the art. Further equivalents, alternatives and modifications are possible as would be recognized by those skilled in the art.

U.S. Pat. No. 7,305,928, incorporated by reference herein above, describes how a marine vessel can be made to move in the following manners: to sidle with no movement in either a forward or reverse direction and no rotation (see FIGS. 2 and 3 of the '928 patent and accompanying description); to move in a forward direction with no side movement and no rotation (see FIG. 4 of the '928 patent and accompanying description); to cause a combined movement with both a linear force and a moment exerted on the marine vessel (FIG. 6 of the '928 patent and accompanying description); or to rotate with no linear movement in either a forward/reverse or a left/right direction (FIG. 6 alternative). The '928 patent further describes how these types of motions and different thrusts can be requested by moving a handle of a joystick forward, backward, side-to-side, or at an angle, by rotating the handle of the joystick, or by combining joystick translation and rotation. The '928 patent also describes how a controller can be programmed to cause associated marine propulsion devices to move and produce thrust as if they are being controlled by a joystick according to a station keeping function, which maintains the marine vessel at a desired global position and desired heading. The devices and methods described in the '928 patent for initiating, carrying out, and cancelling the station keeping function form the foundation for the presently disclosed systems and methods for maintaining a marine vessel in a selected position and at a selected orientation within a body of water.

FIG. 1 is a schematic representation of a marine vessel 10 having a control system 12 which is configured to perform the steps of an exemplary method for maintaining a marine vessel in a selected position and orientation within a body of water. The marine vessel 10 is provided with a global positioning system (GPS) 15 including a GPS receiver 14 which is located at a preselected position on the marine vessel 10 and provides information related to the global position of the marine vessel 10 in terms of latitude and longitude. The global positioning system 15 also includes an inertial measurement unit (IMU) 16 in communication with the GPS receiver 14. The IMU 16 can be, for example, part 8M0048162 available from Mercury Marine of Fond du Lac, Wis. In certain embodiments of the IMU 16, it comprises a differential correction receiver, accelerometers, angular rate sensors, and a microprocessor which manipulates the information obtained from these devices to provide information relating to the current position of the marine vessel 10, in terms of longitude and latitude, the current heading of the marine vessel 10 with respect to north, and the velocity and acceleration of the marine vessel 10 in six degrees of freedom.

The control system 12 also includes at least one proximity sensor 34 a on the marine vessel 10. In contrast to the GPS 15 (including GPS receiver 14 and IMU 16), which determines a global position and a heading of the marine vessel 10 with respect to Earth's geographic coordinate system, the proximity sensor 34 a determines a relative position and a bearing of the marine vessel 10 with respect to an object 36 near the marine vessel 10. The object 36 can be anything in, under, or near the water, such as a buoy, dock, shoreline, seawall, etc. Ideally, the object 36 has enough physical variance that it can provide a three-dimensional picture to the proximity sensor 34 a such that the proximity sensor 34 a can tell one part of the object 36 from another part of the object 36. In the example shown, there is at least one additional proximity sensor 34 b, 34 c, 34 d on the marine vessel 10 that provides additional relative position and bearing data with respect to the object 36, and the controller 18 accounts for the relative position and bearing data from all proximity sensors 34 a-34 d to determine the position of the marine vessel 10 with respect to the object 36. The proximity sensors 34 a-34 d can all be of the same type, or can be of varied types. More than one sensor of a particular type may be provided, and sensors may be provided at locations other than those shown herein. Fewer or more sensors than shown can also be provided.

One or more of the proximity sensors 34 a-34 d can be a sonar device, which measures the distance of the marine vessel 10 to the object 36 by converting the time from transmission to reception of a sound pulse into a range based on the speed of sound. To measure the bearing of the object 36 with respect to the marine vessel 10, the relative arrival time to several hydrophones may be measured, or a process known to those of skill in the art as beamforming may be used. One or more of the proximity sensors 34 a-34 d can be a LiDAR device, which measures the amount of time it takes for emitted laser pulses to bounce back from the object 36, and converts this to a range given the speed of light. Different methods may be used to measure bearing using a LiDAR device, one of which includes using detectors arranged in quadrants to calculate a centroid of the returned light beam, which can be used to determine the angle of the light returned from the object 36. In yet another example, one or more of the proximity sensors 34 a-34 d can be a radar device, which determines the range to the object 36 by measuring the amount of time required for a reflected echo to return. Bearing to the object 36 may be determined by the direction from which the reflected echo returns.

FIG. 1 also shows a controller 18 that is operable in a station keeping mode and in signal communication with the GPS 15 and the proximity sensors 34 a-34 d. One having ordinary skill in the art will recognize that the controller 18 can have many different forms and is not limited to the example that is shown and described. For example, here the controller 18 carries out the station keeping method and controls the propulsion system 38 as will be described herein below, but in other examples separate propulsion control modules and/or thrust vector control modules can be provided for each propulsion device. Thus, portions of the methods described herein can be carried out by a single controller or by several separate controllers. Additionally, each controller can have one or more control sections or control units. In some examples, the controller 18 may include a computing system that includes a processing system, storage system, software, and input/output (I/O) interfaces for communicating with devices such as those shown in FIGS. 1 and 6. The processing system loads and executes software from the storage system, such as software programmed with a station keeping method. When executed by the computing system, station keeping software directs the processing system to operate as described herein below in further detail to execute the station keeping method. The computing system may include one or many application modules and one or more processors, which may be communicatively connected. The processing system can comprise a microprocessor and other circuitry that retrieves and executes software from the storage system. Processing system can be implemented within a single processing device but can also be distributed across multiple processing devices or sub-systems that cooperate in existing program instructions. Non-limiting examples of the processing system include general purpose central processing units, applications specific processors, and logic devices.

The storage system can comprise any storage media readable by the processing system and capable of storing software. The storage system can include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. The storage system can be implemented as a single storage device or across multiple storage devices or sub-systems. The storage system can further include additional elements, such as a controller capable of communicating with the processing system. Non-limiting examples of storage media include random access memory, read only memory, magnetic discs, optical discs, flash memory, virtual memory, and non-virtual memory, magnetic sets, magnetic tape, magnetic disc storage or other magnetic storage devices, or any other medium which can be used to store the desired information and that may be accessed by an instruction execution system. The storage media can be a non-transitory or a transitory storage media.

In this example, the controller 18 communicates with one or more components of the control system 12 via a communication link 13, which can be a wired or wireless link. The controller 18 is capable of monitoring and controlling one or more operational characteristics of the control system 12 and the propulsion system 38 and their various subsystems by sending and receiving control signals via the communication link 13. In one example, the communication link 13 is a controller area network (CAN) bus, such as described in U.S. Pat. No. 6,273,771, but other types of links could be used. It should be noted that the extent of connections of the communication link 13 shown herein is for schematic purposes only, and the communication link 13 in fact provides communication between the controller 18 and each of the sensors, devices, and various subsystems described herein, although not every connection is shown in the drawing for purposes of clarity.

The controller 18 receives inputs from devices such as the GPS receiver 14, the IMU 16, the proximity sensors 34 a-34 d, and a user input device 20, which allows the operator of the marine vessel 10 to provide manually selectable modes of operation. As some examples, the user input device 20 can be an input screen, a button, a keypad, a gauge, or the like that allows the operator of the marine vessel to manually select various modes of operation associated with the marine vessel 10. One of those selections made by the operator of the marine vessel can provide an enabling signal which informs the controller 18 that the operator desires to operate the marine vessel 10 in a station keeping mode in order to maintain the position of the marine vessel in a selected position and at a selected orientation in the body of water in which the marine vessel 10 is operating. In other words, the operator can use the user input device 20 to activate the present system so that the marine vessel 10 is maintained at a selected position (e.g., a selected longitude and latitude or a selected position relative to an object 36) and a selected orientation (e.g., heading with respect to due north or bearing with respect to the object 36), as will be described further herein below. In one example, as described in the '928 patent, a joystick (not shown) must be in a neutral position when the user input device 20 is actuated in order for the control system 12 to enter the station keeping mode.

According to the present disclosure, the controller 18 chooses between using global position and heading data from the GPS 15 and relative position and bearing data from the proximity sensors 34 a-34 d to determine if the marine vessel 10 has moved from one or both of the selected position and the selected orientation. Each of these examples will be described below with respect to FIGS. 2-4. While in the station-keeping mode, the controller 18 thereafter calculates thrust commands required to return the marine vessel 10 to the selected position and the selected orientation and outputs the thrust commands to the marine propulsion system 38, which uses the thrust commands to reposition the marine vessel 10 at the selected position and the selected orientation.

The marine propulsion system 38 includes a plurality of marine propulsion devices 40 a, 40 b, 40 c coupled to a rear half of the marine vessel 10. The marine propulsion devices 40 a-40 c shown herein are stern drives, but as noted above could be other types of devices. Each marine propulsion device in the plurality of marine propulsion devices 40 a, 40 b, 40 c has an engine 42 a, 42 b, 42 c rotating an output shaft 44 a, 44 b, 44 c at an engine speed. Propulsors 46 a, 46 b, 46 c are coupled in torque transmitting relationship with each respective output shaft 44 a, 44 b, 44 c and produce thrust to propel the marine vessel 10. The propulsors 46 a-46 c shown herein are propellers, but could be other types of propulsors as noted above. Such coupling is provided by way of a series of shafts and a transmission 48 a, 48 b, 48 c controlling the provision and direction of torque transmission between each output shaft 44 a, 44 b, 44 c and each propulsor 46 a, 46 b, 46 c in forward, neutral, or reverse. The shafts and transmissions may be provided in respective gear cases or protective coverings 50 a, 50 b, 50 c for each propulsion device 40 a, 40 b, 40 c. Each propulsion device 40 a-40 c has a generally vertical steering axis 52 a, 52 b, 52 c with respect to which the propulsor 46 a-46 c is rotatable in order to vary a direction of the thrust produced by the propulsor. The thrust commands include a steering angle of each propulsor 46 a-46 c about its respective steering axis 52 a-52 c, the direction of torque transmission between each output shaft 44 a-44 c and its respective propulsor 46 a-46 c, and the engine speed of each respective engine 42 a-42 c for each respective marine propulsion device 40 a, 40 b, 40 c in the plurality of marine propulsion devices. As mentioned above, these specific commands can be calculated by and provided from the controller 18, or can be calculated by and provided from separate thrust vector control and propulsion control modules.

FIG. 2 shows a marine vessel 10 at an initial global position 26, measured as longitude and latitude, and an initial heading represented by angle A1 between the heading vector 22 of the marine vessel 10 and a due north vector N. In one example, the controller 18 sets the initial global position 26 and the initial heading A1 as the selected position and the selected orientation upon initiation of the station keeping mode. This may be in response to an object 36 not being within a given range of the marine vessel 10. In other words, if after station keeping is initiated via the user input device 20, the proximity sensors 34 a-34 d do not sense an object 36 within range, the controller 18 will set the initial global position and heading of the marine vessel 10 as the selected position and orientation. The GPS receiver 14 and the IMU 16 determine the information relating to the global position and heading of the marine vessel 10. For exemplary purposes, the position and heading will be described in terms of the position of a center of gravity 24 of the marine vessel 10 and a heading vector 22 which extends through the center of gravity 24. However, it should be understood that alternative locations on the marine vessel 10 can be used for these purposes. The IMU 16 provides a means by which this location on the marine vessel 10 can be selected.

FIG. 2 also shows the marine vessel 10 with the global position of its center of gravity 24′ moved to a location represented by a subsequent global position 28 of the marine vessel 10. In addition, in the subsequent global position 28, the marine vessel 10 is illustrated as having rotated slightly in a clockwise direction so that its heading vector 22′ is now defined by a larger angle A2 with respect to the due north vector N. In one example, the subsequent position and orientation are defined by an actual global position 28 and an actual heading A2 of the marine vessel 10. It should be understood that the difference in position between the selected initial global position 26 and the subsequent actual global position 28 is significantly exaggerated so that the response by the control system 12 can be clearly described. In one example, the controller 18 determines a difference between a selected position, such as the initial global position 26, and the actual position, such as the subsequent global position 28, that resulted from the marine vessel 10 drifting. This drift of the marine vessel 10 can occur because of wind, tide, current, or the like.

The controller 18 compares the actual global position 28 and heading A2 of the marine vessel 10 to the previously-stored selected global position 26 and heading A1. An error, or difference, in the north/south, east/west, and heading framework is computed as the difference between the selected global position 26 and heading A1 and the actual global position 28 and heading A2. This error, or difference, is then converted to an error, or difference, in the forward/reverse, right/left, and heading framework of the marine vessel 10, which is sometimes referred to as the body framework. These vessel framework error elements are then used by the station keeping software, which attempts to simultaneously null the error, or difference, elements. For example, through the use of a PID controller, the controller 18 computes a desired force in the fore/aft and left/right directions with reference to the marine vessel 10, along with a desired yaw moment relative to the marine vessel 10 in order to null the error elements. The computed force and moment elements are then transmitted to the marine propulsion system 38 described above, which delivers the requested forces and moments by rotating the independently steerable marine propulsion devices 40 a-40 c about their steering axes 52 a-52 c, controlling the power provided to the propulsors 46 a-46 c of each device by controlling the speed of each engine 42 a-42 c, and controlling the thrust vector directions of the marine propulsion devices via the transmissions 48 a-48 c.

For example, the controller 18 may determine that the difference between the selected global position 26 and the actual global position 28 can be reduced if the marine vessel 10 is subjected to an exemplary target linear thrust 30 and a target moment 32. The target linear thrust 30 and the target moment 32, in a preferred embodiment, are achieved by a manipulation of the marine propulsion devices 40 a-40 c as described above. The target linear thrust 30 will cause the marine vessel 10 to move towards its initial, or selected, global position 26, which is measured as a magnitude of longitude and latitude. The target moment 32 will cause the marine vessel 10 to rotate about its center of gravity 24 so that its heading vector 22′ moves from the actual global position 28 to the selected global position 26. This reduces the heading angle from the larger magnitude of angle A2 to the smaller magnitude of A1. Both the target linear thrust 30 and target moment 32 are computed to decrease the errors between the actual global position 28 and heading A2 and the selected global position 26 and heading A1.

Using the measured global position and heading of the marine vessel 10, as determined by the GPS 15, may be desirable when the marine vessel 10 is in open water or is not near an object. As mentioned briefly above, in one example, the controller 18 chooses to use the global position and heading data from the GPS 15 if the proximity sensors 34 a-34 d do not sense an object 36 within a given range upon initiation of the station keeping mode. The lack of an object 36 within a given range (which range may be calibrated into the system or user-selected) indicates that the marine vessel 10 is in open water or not near any objects. Thus, using the global position and heading data from the GPS 15 to calculate the thrust commands to maintain or return the marine vessel 10 to the selected position and orientation is sufficient.

However, GPS receivers do not always have good signals, which may result in the controller 18 not recognizing an error in position or orientation of the marine vessel 10 and therefore not taking subsequent action to correct such error. Additionally, PID filters and control loops used when working with GPS data have built in latency in order to help them remain stable, resulting in slower error detection. Lack of control output or slower control output is likely not detrimental when there are no objects nearby. However, the present inventor has realized through research and development that the lack of (or slower) control output due to GPS inaccuracy prevents the station keeping mode from working reliably near objects such as docks, seawalls, etc., where the marine vessel 10 might hit the object 36. For example, referring to FIG. 3, if the GPS receiver 14 provides fidelity with only, for example, a radius R around the GPS receiver 14, the marine vessel 10 may not be prevented from contacting a seawall or dock 54 within this radius R. In other words, the data from the GPS receiver 14 will indicate to the controller 18 that the marine vessel 10 is at the selected position and selected orientation and no corrective thrust commands are needed, even if the marine vessel 10 is in fact about to hit the dock 54. Because the inherent error in GPS data limits the control resolution to only a few feet (i.e., at the radius R), the marine vessel 10 is difficult to control when disturbance forces are high. The marine vessel 10 must move a few quantization units from the selected position before the controller 18 can react.

Relative position and bearing data from the proximity sensors 34 a-34 d can be used in order to provide measurement resolution and accuracy much higher than that of the GPS receiver 14. In one example, the controller 18 chooses to use the relative position and bearing data from the proximity sensors 34 a-34 d if the proximity sensors sense the object 36 or 54 within a given range of the marine vessel 10 upon initiation of the station keeping mode. For example, if the object 36 or dock 54 is within ten meters of the marine vessel 10 upon initiation of the station keeping mode, the controller 18 may choose to use the proximity sensors 34 a-34 d to set a user-selected position and orientation and to determine subsequent movement from those selections. The given range may be measured from the center of gravity of the marine vessel 10, from the outer edge of the hull, or from the proximity sensor nearest the object 36, 54, depending on system calibration. Here, it is assumed that the proximity sensors 34 a-34 d are calibrated to determine the distances and bearings with respect to the center of gravity 64, 64′ of the marine vessel (FIG. 4) for ease of explanation; however, it should be understood that the different readings from each proximity sensor on the vessel can be accounted for according to other calculations that do not relate the distance and bearing to the center of gravity. Additionally, note that if a plurality of proximity sensors are used, the data they provide can be used to create a virtual map or virtual photograph of the nearby object 36, 54, thereby providing the controller 18 with information regarding whether the sensors are in fact measuring distance to, for example, a post 66 of the dock 54 and, for example, regarding the depth of the post 66, thus leading to more accurate corrective calculations.

FIG. 4 shows an example of how relative position and bearing data can be used to determine if the marine vessel 10 has moved from the selected position and orientation. For example, an initial relative position of the marine vessel 10 is shown at 56, with the marine vessel 10 having its center of gravity 64 at a distance D1 from the dock 54. The initial bearing B1, measured here as the angle of the center of gravity 64 from a virtual point of origin O on the dock 54, is about 90 degrees. In one example, the initial relative position 56 and the initial bearing B1 can be set by the user as the selected position and the selected orientation in response to the object 36, 54 being within the given range of the marine vessel 10 upon initiation of the station keeping mode. In other words, upon initiation of the station keeping mode by actuation of the user input device 20, the controller 18 will determine if the object 36 (dock 54) is in range, and if so, will save the initial relative position 56 and bearing B1 as the selected position and bearing. In another example, the initial position and bearing can be saved as the selected position and bearing in response to operator input regardless of how close the marine vessel 10 is to the object 36, 54. In either case, because the controller 18 saves both a distance of the center of gravity 64 from the virtual point of origin O and an angle of the center of gravity 64 from the virtual point of origin O, the controller 18 can compute the vessel's position with respect to a second axis, and can save the (x, y) position of the center of gravity 64 with respect to the virtual point of origin O.

The marine vessel 10 may thereafter drift due to the force of wind, waves, current, or the like to a subsequent actual relative position 62, where the marine vessel 10 has a center of gravity 64′ at a different distance D2 from the point of origin O on the dock 54 and also at a different bearing B2 with respect to the point of origin O on the dock 54, and therefore a different (x, y) position with respect to the origin O. The controller 18 then compares the actual relative position 62 and bearing B2 of the marine vessel 10 to the previously-stored selected relative position 56 and bearing B1. An error, or difference, in the forward/reverse, right/left, and heading framework of the marine vessel 10 is then computed. These vessel framework error elements are then used by the station keeping software, which attempts to simultaneously null the error, or difference, elements. Through the use of a PID controller, a desired force is computed in the fore/aft and left/right directions with reference to the marine vessel 10, along with a desired yaw moment relative to the marine vessel 10 in order to null the error elements. The computed force and moment elements are then transmitted to the marine propulsion system 38 described above, which delivers the requested forces and moments by positioning the independently steerable marine propulsion devices 40 a-40 c, controlling the power provided to the propulsors 46 a-46 c of each device, and controlling the thrust vector directions of the marine propulsion devices 40 a-40 c, similar to the description provided with respect to control using GPS data.

The difference between the selected relative position 56 and the actual relative position 62 can be reduced if the marine vessel 10 is subjected to an exemplary target linear thrust 80 and a target moment 82. The target linear thrust 80 and the target moment 82, in a preferred embodiment, are achieved by a manipulation of the marine propulsion devices 40 a-40 b as described above. The target linear thrust 80 will cause the marine vessel 10 to move towards its initial, or selected, relative position 56. The target moment 82 will cause the marine vessel 10 to rotate about its center of gravity 64 so that its orientation with respect to the point of origin O on the dock 54 changes from the actual bearing B2 to the selected bearing B1. Both the target linear thrust 80 and target moment 82 are computed to decrease the errors between the actual relative position 62 and bearing B2 and the selected relative position 56 and bearing B1.

In other examples, while operating in the station keeping mode, the controller 18 may choose to switch from using the global position and heading data from the GPS 15 to using the relative position and bearing data from the proximity sensors 34 a-34 d in response to the proximity sensors 34 a-34 d sensing that the marine vessel 10 has come within a predetermined distance of the object 36, 54, which predetermined distance may be user-selected or calibrated. For example, the controller 18 may choose to start using the data from the proximity sensors 34 a-34 d when the marine vessel 10 comes within five meters of an object 36, 54 due to strong winds, current, or waves. The predetermined distance could alternatively be the same as the given range used to initially decide if the proximity sensor data or the GPS data will be used upon initiation of station keeping mode. The controller 18 may make this switch in a binary manner, such that either GPS data or proximity data is used depending on whether the predetermined distance has been reached. Alternatively, the controller 18 may make the switch slowly, by filtering proximity sensor data into the GPS data over time or as the vessel continues to move closer to the object 36, 54.

FIG. 5 is a schematic showing a method for maintaining a marine vessel 10 at a selected position and orientation according to the present disclosure. As shown at 500, the method includes accepting an input to initiate a station keeping mode of a control system 12 of the marine vessel 10. This input might be through actuation of the user input device 20, and may or may not require that a joystick be in a neutral position. At 502, the method includes using a proximity sensor 34 a on the marine vessel 10 to determine if an object 36, 54 is within a given range of the marine vessel 10. In response to the object 36, 54 being within the given range of the marine vessel 10, the method continues to 504, and includes obtaining a relative position and a bearing of the marine vessel 10 with respect to the object 36, 54 with the proximity sensor 34 a. As shown at 506, the method thereafter includes using relative position and bearing data from the proximity sensor 34 a to determine if the marine vessel 10 subsequently moves from one or both of the selected position and the selected orientation.

In one example, the method includes utilizing the global position and heading data from the GPS 15 to verify that the proximity sensor 34 a is operable, while using the relative position and bearing data to determine if the marine vessel 10 moves from one or both of the selected position and the selected orientation. For instance, if the GPS 15 indicates that the GPS position or heading is changing by a calibrated amount (which is a relatively significant amount) while the proximity sensors 34 a-34 d report no movement from the selected position and orientation, the controller 18 might determine that the proximity sensors 34 a-34 d are inoperative. In this instance, the controller 18 may switch to using the GPS data while continuing in station keeping mode, and/or may send an alert to the user to deactivate the station keeping mode and examine the proximity sensors. In another example, the method may include utilizing the global position and heading data from the GPS 15 to determine if the object 36, 54 itself is moving, while using the relative position and bearing data to determine if the marine vessel 10 moves from one or both of the selected position and the selected orientation. This method can be used to determine if the object 36, 54 from which the marine vessel 10 is maintaining a selected distance and bearing is in fact another vessel, in which case the controller 18 may alert the user to deactivate the station keeping mode, and/or may switch to using the GPS data for station keeping instead.

In any of the above examples, the method then continues to 508, and includes using a difference between the selected position and the selected orientation and an actual position and an actual orientation, as determined from the relative position and bearing data, to calculate thrust commands that will return the marine vessel 10 to the selected position and the selected orientation.

On the other hand, in response to the object 36, 54 not being within the given range of the marine vessel 10, as shown at 510, the method includes obtaining a global position and a heading of the marine vessel using the GPS 15, and thereafter using global position and heading data from the GPS 15 to determine if the marine vessel 10 subsequently moves from one or both of the selected position and the selected orientation, as shown at 512. In one example, the method includes ignoring the relative position and bearing data from the proximity sensors 34 a-34 d after determining that the object 36, 54 is not within the given range and while using the global position and heading data to determine if the marine vessel 10 moves from one or both of the selected position and the selected orientation. In this case, the controller 18 has determined that it will use GPS position and IMU heading for station keeping, and continues to use this data until station keeping mode is deactivated. In contrast, in another example, the method includes using the proximity sensors 34 a-34 d to detect if the marine vessel 10 subsequently comes within a predetermined distance of the object 36, 54 after determining that the object 36, 54 is not within the given range (at least upon initiation of the station keeping mode) and while using the global position and heading data to determine if the marine vessel 10 moves from one or both of the selected position and the selected orientation. If the marine vessel 10 is within the predetermined distance of the object 36, 54, the controller 18 may filter the relative position and bearing data into the global position and heading data to determine if the marine vessel 10 moves from one or both of the selected position and the selected orientation. This allows the controller 18 to slowly take into account the proximity sensor data depending on how close the object 36, 54 is and/or the speed of the marine vessel 10. Alternatively, the controller 18 can switch immediately to using the proximity sensor data upon determining that the marine vessel 10 is within the predetermined distance of the object 36, 54.

As shown at 514, in any of the above examples, the method next includes using a difference between the selected position and the selected orientation and an actual position and an actual orientation, as determined from the global position and heading data, to calculate thrust commands that will return the marine vessel 10 to the selected position and the selected orientation. In yet another example, the controller 18 uses GPS data to control the position of the marine vessel 10 in one direction (e.g. forward/reverse) with respect to the object 36, 54, and uses proximity data to control the position of the marine vessel 10 in a perpendicular direction (e.g. left/right) with respect to the object 36, 54. This might be helpful if the object does not have defining 3D characteristics (e.g. the posts 66 on the dock 54) that can be mapped by the proximity sensors 34 a-34 d.

After 508 or 514, as appropriate, the method continues to 516 and includes outputting the thrust commands to a marine propulsion system 38, which uses the thrust commands to reposition the marine vessel 10 at the selected position and the selected orientation.

FIG. 6 is a schematic representation of the devices and software used in conjunction with one example of the control system 12 of the present disclosure. A target selector portion 68 of the software stored in the controller 18 receives inputs from the GPS receiver 14, the IMU 16, the user input device 20, the proximity sensors 34 a-34 d (via a transform module 70) and a joystick (not shown). When the station keeping mode is enabled by an input from the operator of the marine vessel 10 via the user input device 20, the target selector portion 68 receives a current set of magnitudes from the IMU 16 or the transform module 70 and stores those values as the selected position and the selected orientation of the marine vessel 10. If the system is using the global position and heading data from the GPS 15, the selected position is a set of global coordinates in latitude and longitude and the selected heading is an angle relative to due north. If the system is using the relative position and bearing data from the proximity sensors 34 a-34 d, the selected position is a distance of the marine vessel 10 from the object 36, 54 and the selected orientation is an angle of the marine vessel 10 with respect to the object 36, 54. The selected position and selected orientation information is then stored in the memory of the controller 18.

When in the station keeping mode, the GPS receiver 14, the IMU 16, and the proximity sensors 34 a-34 d periodically obtain new data, and provide actual position and actual orientation information to a first error calculator 72 or a second error calculator 74 within the controller 18. For example, the IMU 16 provides the actual global position and actual heading to the first error calculator 72, and the target selector portion 68 provides the selected global position and the selected heading to the first error calculator 72. The first error calculator 72 compares the selected global position and selected heading to actual values of these two variables. The comparison produces a difference magnitude which is defined in terms of a north-south difference and an east-west difference in combination with a heading angular difference. The north-south difference and east-west difference are the net difference in the longitude and latitude positions represented by the selected global position and actual global position. The heading angular difference is the angular difference between angles A2 and A1 (see FIG. 2). This information, which is described in terms of global measurements and which is in reference to stationary global references, is then provided to the second error calculator 74, which resolves those values into forward-reverse, left-right, and heading changes in reference to clockwise and counterclockwise movement of the marine vessel 10.

The second error calculator 74 receives the selected position and selected bearing information from the target selector portion 68, and receives the actual position and the actual bearing from the proximity sensors 34 a-34 d via the transform module 70. The transform module 70 uses a coordinate transform algorithm to convert the relative position and bearing data from the proximity sensors 34 a-34 d into vessel framework error data the controller 18 can use to calculate the thrust commands. For example, using the polar-to-Cartesian coordinate transform algorithm, the transform module 70 changes the relative position and bearing data from a distance and bearing with respect to a point of origin O on the object 36, 54 to an (x, y) value and bearing (the difference between angles B2 and B1). This presents the error values as values that correspond to forward-reverse, left-right, and heading changes in reference to clockwise and counterclockwise movement of the marine vessel 10. In one example, the controller 18 sets the initial relative position of the marine vessel 10 upon initiation of the station keeping mode as an x, y coordinate of (0, 0) and sets the initial bearing of the object 36 with respect to the marine vessel 10 as a bearing of 0 degrees such that any subsequent readings from the proximity sensors 34 a-34 d are in fact the error values. For example, if the marine vessel 10 moves ten meters forward and twelve meters left and rotates clockwise by five degrees due to external forces, the propulsion system 38 will need to provide thrust in an amount and direction to move the marine vessel 10 ten meters back, twelve meters right, and five degrees counter-clockwise. It can be seen then that if the initial position of the vessel is set as (0, 0) with 0 degrees of bearing, the error values can be fed through to the PID controller 76, which uses a closed-loop control algorithm to calculate the thrust commands.

Whether measured initially from GPS data or proximity data, the forward/reverse, left/right, and heading errors are provided from the second error calculator 74 to the PID controller 76. As is generally known to those skilled in the art, a PID controller uses proportional, integral, and derivative techniques to maintain a measured variable at a preselected setpoint. In the proportional band of the controller, the controller output is proportional to the error between the desired magnitude and the measured magnitude. The integral portion of the controller provides a controller output that is proportional to the amount of time that an error, or difference, is present. The derivative portion of the controller provides an output that is proportional to the rate of change of the measurement. Each of the portions, or control strategies, of the PID controller typically uses an individual gain factor so that the PID controller 76 can be appropriately tuned for each particular application. However, it should be understood that specific types of PID controllers and specific gains for the proportional, integral, and derivative portions of the controller are not limiting.

In one example, the PID controller 76 outputs more aggressive thrust commands when the controller 18 is using the relative position and bearing data from the proximity sensors 34 a-34 d than when the controller 18 is using the global position and heading data from the GPS 15. The PID can be tuned to provide a more precise, quicker response because it does not have to deal with GPS signal error. For example, the gains used for PID control can be greater when calculating the thrust commands based on position and orientation error determined by the proximity sensors because proximity data is generally more accurate than GPS data. The PID controller 76 might use a larger gain factor for the proportional output, for example, to cause the marine vessel 10 to move a greater amount back to the desired position and orientation per feedback loop. In contrast, the gains used when the controller 18 is using the global position and heading data may result in relatively smaller changes and/or relatively slower changes in position and orientation.

Additionally or alternatively, the PID controller 76 might be programmed with deadbands, such that the controller 18 does not calculate the thrust commands to reposition the marine vessel 10 unless one or both of the following are true: (1) a difference between the selected position and the global position or the relative position, as appropriate, is greater than a position error threshold; and (2) a difference between the selected orientation and the heading or the bearing, as appropriate, is greater than an orientation error threshold. The controller may have different deadbands for control when calculating the thrust commands based on position error determined from information provided by the proximity sensors than when calculating the thrust commands based on position error determined from information provided by the GPS. The deadbands might be narrower (i.e., have a lower position error threshold and/or a lower orientation error threshold) when using the relative position and bearing data than when using the global position and heading data, again because the proximity sensors provide greater accuracy that the GPS. Therefore, the controller 18 will respond to smaller margins of error when using the relative position and bearing data than when using the global position and heading data. Thus, the programmed position error threshold and orientation error threshold may be greater when the controller 18 is using the global position and heading data from the GPS receiver 14 than when the controller 18 is using the relative position and bearing data from the proximity sensors 34 a-34 d.

With continued reference to FIG. 6, the error correction information provided by the PID controller 76 is then used by the maneuvering algorithm 78, which is described in greater detail here in above and in the '928 patent. The maneuvering algorithm 78 receives information describing the required corrective vectors, both the target linear thrust (for example, 30 in FIG. 2 or 80 in FIG. 4) and the target moment (for example, 32 in FIG. 2 or 82 in FIG. 4), necessary to reduce the error or difference between the actual global position (or actual relative position) and heading (or bearing) and the user-selected position and orientation.

It should be recognized that the station keeping mode is not always intended to move the marine vessel 10 by significant distances. Instead, the controller's continual response to slight changes in position and orientation will more likely maintain the marine vessel 10 in position without requiring perceptible movements of the marine vessel 10. In other words, the marine propulsion devices 40 a-40 c are selectively activated in response to slight deviations in the position and orientation of the marine vessel 10 and, as a result, large corrective moves such as those illustrated in FIGS. 2 and 4 will not normally be required. As a result, the thrusts provided by the marine propulsion devices continually counter the forces on the marine vessel 10 caused by wind, current, and tide so that the net result is an appearance that the marine vessel 10 is remaining stationary and is unaffected by the external forces.

However, alternative examples could be used to cause the marine vessel 10 to move to a position, defined by a user-selected position and orientation, that was previously stored in the memory of the controller 18. Under those conditions, a relatively larger target linear thrust 30, 80 and target moment 32, 82 could be used to move the marine vessel 10 to the initial position 26, 56 when that initial position 26, 56 is selected from the memory and the station keeping mode is enabled. As an example, a user-desired position, such as the position identified by reference numeral 26 or 56, can be stored in the controller 18 and then recalled, perhaps days later, after the operator of the marine vessel has moved the marine vessel 10 to a position in the general vicinity of the stored user-selected position 26, 56. In other words, if the operator of the marine vessel maneuvers it to a location, such as the location identified by reference numeral 28 or 62, the station keeping mode can be enabled and activated. Under those conditions, the control system 12 will cause the marine vessel 10 to move to its stored selected position 26 or 56 that was selected and saved at some previous time. This technique could possibly be advantageous in returning the marine vessel 10 to a desirable fishing location or to a docking position after the operator has maneuvered the marine vessel 10 into a position that is generally close to the user-selected position 26 or 56.

In the above description certain terms have been used for brevity, clearness and understanding. No unnecessary limitations are to be implied therefrom beyond the requirement of the prior art because such terms are used for descriptive purposes only and are intended to be broadly construed. The different systems and methods described herein above may be used in alone or in combination with other systems and methods. Various equivalents, alternatives and modifications are possible within the scope of the appended claims. Each limitation in the appended claims is intended to invoke interpretation under 35 USC § 112(f) only the terms “means for” or “step for” are explicitly recited in the respective limitation. While each of the method claims includes a specific series of steps for accomplishing certain control system functions, the scope of this disclosure is not intended to be bound by the literal order or literal content of steps described herein, and non-substantial differences or changes still fall within the scope of the disclosure. 

What is claimed is:
 1. A system for maintaining a marine vessel in a body of water at a selected position and a selected orientation, the system comprising: a proximity sensor on the marine vessel that determines a distance between a predetermined point on the marine vessel and a virtual point on an object near the marine vessel and determines a relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object; a marine propulsion system that produces thrust to move the marine vessel in the body of water; and a controller in signal communication with the proximity sensor and the marine propulsion system; wherein in response to receiving a position and orientation maintenance command, the controller controls the marine propulsion system to produce thrust to maintain the marine vessel at the selected position and orientation; wherein, in response to receiving the position and orientation maintenance command and in response to the proximity sensor sensing the virtual point on the object within a given range of the predetermined point on the marine vessel, the controller calculates thrust commands based on a difference between a selected and an actual distance between the predetermined point on the marine vessel and the virtual point on the object and based on a difference between a selected and an actual relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object; and wherein the controller thereafter outputs the thrust commands to the marine propulsion system, which uses the thrust commands to produce thrust to move the marine vessel to the selected distance between the predetermined point on the marine vessel and the virtual point on the object and to the selected relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object.
 2. The system of claim 1, further comprising a global positioning system (GPS) on the marine vessel that determines a global position and a heading of the marine vessel with respect to Earth's geographic coordinate system; wherein in response to receiving the position and orientation maintenance command and in response to the proximity sensor not sensing the virtual point on the object within the given range of the predetermined point on the marine vessel, the controller calculates the thrust commands based on a difference between a selected and an actual global position of the marine vessel and based on a difference between a selected and an actual heading of the marine vessel; wherein the marine propulsion system thereafter uses the thrust commands to produce thrust to move the marine vessel to the selected global position and to the selected heading.
 3. The system of claim 2, wherein the controller uses a closed-loop control algorithm to calculate the thrust commands, and wherein the controller outputs greater and quicker corrective responses when the controller is calculating the thrust commands based on the difference between the selected and the actual distance and based on the difference between the selected and the actual relative bearing than when the controller is calculating the thrust commands based on the difference between the selected and the actual global position and based on the difference between the selected and the actual heading.
 4. The system of claim 1, wherein the controller does not calculate the thrust commands unless one or both of the following are true: (a) the difference between the selected and the actual distance between the predetermined point on the marine vessel and the virtual point on the object is greater than a position error threshold; and (b) the difference between the selected and the actual relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object is greater than an orientation error threshold.
 5. The system of claim 1, wherein the predetermined point on the marine vessel is a center of gravity of the marine vessel.
 6. The system of claim 1, wherein the predetermined point on the marine vessel is on an outer edge of a hull of the marine vessel.
 7. The system of claim 1, further comprising a user input device that can be actuated to input the position and orientation maintenance command to the controller.
 8. The system of claim 1, wherein the selected distance is an initial distance between the predetermined point on the marine vessel and the virtual point on the object upon receipt of the position and orientation maintenance command, and the selected relative bearing is an initial relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object upon receipt of the position and orientation maintenance command.
 9. A method for maintaining a marine vessel in a body of water at a selected position and a selected orientation, the method comprising: determining a distance between a predetermined point on the marine vessel and a virtual point on an object near the marine vessel; determining a relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object; receiving a position and orientation maintenance command; in response to receiving the position and orientation maintenance command and in response to sensing the virtual point on the object within a given range of the predetermined point on the marine vessel, calculating thrust commands based on a difference between a selected and an actual distance between the predetermined point on the marine vessel and the virtual point on the object and based on a difference between a selected and an actual relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object; and thereafter outputting the thrust commands to a marine propulsion system, which uses the thrust commands to produce thrust to move the marine vessel to the selected distance between the predetermined point on the marine vessel and the virtual point on the object and to the selected relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object.
 10. The method of claim 9, further comprising: determining a global position and a heading of the marine vessel with respect to Earth's geographic coordinate system; and in response to receiving the position and orientation maintenance command and in response to not sensing the virtual point on the object within the given range of the predetermined point on the marine vessel, calculating the thrust commands based on a difference between a selected and an actual global position of the marine vessel and based on a difference between a selected and an actual heading of the marine vessel; wherein the marine propulsion system thereafter uses the thrust commands to produce thrust to move the marine vessel to the selected global position and to the selected heading.
 11. The method of claim 10, further comprising using a closed-loop control algorithm to calculate the thrust commands, and outputting greater and quicker corrective responses when calculating the thrust commands based on the difference between the selected and the actual distance and based on the difference between the selected and the actual relative bearing than when calculating the thrust commands based on the difference between the selected and the actual global position and based on the difference between the selected and the actual heading.
 12. The method of claim 9, further comprising calculating the thrust commands only in response to one or both of the following being true: (a) the difference between the selected and the actual distance between the predetermined point on the marine vessel and the virtual point on the object is greater than a position error threshold; and (b) the difference between the selected and the actual relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object is greater than an orientation error threshold.
 13. The method of claim 9, wherein the predetermined point on the marine vessel is a center of gravity of the marine vessel.
 14. The method of claim 9, wherein the predetermined point on the marine vessel is on an outer edge of a hull of the marine vessel.
 15. The method of claim 9, further comprising receiving the position and orientation maintenance command in response to actuation of a user input device.
 16. The method of claim 9, wherein the selected distance is an initial distance between the predetermined point on the marine vessel and the virtual point on the object upon receipt of the position and orientation maintenance command, and the selected relative bearing is an initial relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object upon receipt of the position and orientation maintenance command.
 17. A method for maintaining a marine vessel in a body of water at a selected position and a selected orientation, the method comprising: receiving a position and orientation maintenance command; determining if a virtual point on an object near the marine vessel is within a given range of a predetermined point on the marine vessel; in response to receiving the position and orientation maintenance command and in response to the virtual point on the object being within the given range of the predetermined point on the marine vessel, determining an initial relative position of the predetermined point on the marine vessel with respect to the virtual point on the object and determining an initial relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object; determining a subsequent relative position of the predetermined point on the marine vessel with respect to the virtual point on the object and determining a subsequent relative bearing of the predetermined point on the marine vessel with respect to the virtual point on the object; determining a relative position error between the initial relative position and the subsequent relative position, and determining a relative bearing error between the initial relative bearing and the subsequent relative bearing; calculating thrust commands based on the relative position error and the relative bearing error; and thereafter outputting the thrust commands to a marine propulsion system, which uses the thrust commands to produce thrust to move the marine vessel to minimize the relative position error and the relative bearing error.
 18. The method of claim 17, further comprising: in response to receiving the position and orientation maintenance command and in response to the virtual point on the object not being within the given range of the predetermined point on the marine vessel, determining an initial global position and an initial heading of the marine vessel with respect to Earth's geographic coordinate system; determining a subsequent global position and a subsequent heading of the marine vessel with respect to Earth's geographic coordinate system; calculating the thrust commands based on a difference between the initial and the subsequent global position and based on a difference between the initial and the subsequent heading; wherein the marine propulsion system thereafter uses the thrust commands to produce thrust to move the marine vessel to the initial global position and to the initial heading.
 19. The method of claim 17, wherein the predetermined point on the marine vessel is on an outer edge of a hull of the marine vessel.
 20. The method of claim 17, further comprising receiving the position and orientation maintenance command in response to actuation of a user input device. 